package db

import "gorm.io/gorm"

// 数据库服务器信息，一条数据即一个数据源，可列出数据库列表
type Server struct {
	gorm.Model
	UserId   uint   `json:"userId" gorm:"column:user_id"`
	Name     string `json:"name"`
	IP       string `json:"ip"`
	Port     uint   `json:"port"`
	User     string `json:"user"`
	Password string `json:"password"`
	Database string `json:"database"`
	Driver   string `json:"driver"`
	CreateAt int64  `json:"createAt"`
	UpdateAt int64  `json:"updateAt"`
}

// 添加一个数据源record
func AddServer(server *Server) (uint, error) {
	err := DB.Create(server).Error
	return server.ID, err
}

// 新增或修改一个record
func SaveOneServerRecord(server *Server) (*Server, error) {
	err := DB.Save(server).Error
	return server, err
}

func GetServerById(id uint) (*Server, error) {
	var server Server
	err := DB.Where("id = ?", id).First(&server).Error
	return &server, err
}

func GetUsersServerById(userId uint, id uint) (*Server, error) {
	var server Server
	err := DB.Where("id = ? AND user_id = ?", id, userId).First(&server).Error
	return &server, err
}

func GetServerList() ([]Server, error) {
	var servers []Server
	err := DB.Find(&servers).Limit(20).Offset(0).Error
	return servers, err
}
